import axios from './gangdiedao-uni-axios'
import Config from '@/config/config.conf'
import VUE from 'vue'

var service = axios.create({
  // #ifdef H5
  baseURL: process.env.NODE_ENV === '' ? '' : Config.domain, // 如果要配置跨域，此处值应留空
  // #endif
  // #ifndef H5
  baseURL: process.env.NODE_ENV === 'development' ? '' : Config.domain,
  // #endif
  changeOrigin: true,
  timeout: 15000,
  withCredentials: true, // 发送cookie
  headers: {
		'Content-Type': 'application/json;charset=utf-8', // 指定传参格式，勿删
  }
})
//添加请求拦截器
service.interceptors.request.use(config => {
  let token = uni.getStorageSync('token')
  // 访问大淘客接口，不发送token
  if (token && config.url.indexOf('openapi.dataoke.com') === -1 && config.url.indexOf('cmsjapi.ffquan.cn') === -1) {
    config.headers['token'] = token
  }
  return config
}, function(error) {
  return Promise.reject(error)
})
//添加响应拦截器
service.interceptors.response.use(response => {
  let token = response.headers.token;
  if (token) {
    uni.setStorageSync('token', token);
  }

  /**
   * 下面的注释为通过在response里，自定义code来标示请求状态
   * 当code返回如下情况则说明权限有问题，登出并返回到登录页
   * 如想通过xmlhttprequest来状态码标识 逻辑可写在下面error中
   */
  response => {
    const res = response.data
  }
  // 255:未登录;
  // if (response.status === 401) {
  //   Notification({
  //     message: '未登录',
  //     type: 'error'
  //   })
  //   window.location.href = window.location.origin + '/login'
  // }
  return response
}, error => {
  // console.log(error.response.status)
  if (error.response.status === 401) {
    uni.removeStorageSync('token');
    VUE.prototype.$showModal({
      title: '提示',
      confirmText: '去登陆',
      content: '为了给您提供更好的体验，建议您登录后继续操作',
      success: res => {
        if (res.confirm) {
          uni.navigateTo({
            url: '/pages/usercenter/login'
          });
        }
      }
    });
  } else if (error.response.status === 403) {
    uni.showToast({
      icon: 'none',
      title: '对不起，您暂无访问权限',
    });
  } else {
    if (error.response.status !== 200) {
      uni.showToast({
        icon: 'none',
        title: error.response.data.message || '系统未知错误',
      });
      return Promise.reject('error')
    } else {
      return error.response
    }
  }
  return Promise.reject('error');
})
export default {
  //get请求
  get(url, data) {
    return new Promise((resolve, reject) => {
      service({
        method: 'get',
        url,
        params: data
      }).then(res => { //axios返回的是一个promise对象
        resolve(res.data) //resolve在promise执行器内部
      }).catch(err => {
        // console.log(err, '异常')
        reject(err)
      })
    })
  },
  //post请求
  post(url, data) {
    return new Promise((resolve, reject) => {
      service({
        method: 'post',
        url,
        data: data
      }).then(res => {
        resolve(res.data)
      }).catch(err => {
        // console.log(err, '异常')
        reject(err)
      })
    })
  }
}
